import { defineStore } from 'pinia';
import { ref, computed } from 'vue'; // 导入 Vue 的 ref 和 computed 函数，用于创建响应式数据和计算属性
import { getDetail } from '@/api/infomanagement/teacher'; // 导入新的API函数
import useUserStore from "@/store/modules/user";

export const useTeacherStore = defineStore('teacher', () => {
  // 定义教师信息状态，使用 ref 创建响应式对象
  const teacherInfo = ref({
    userId: '',
    realname: '',
    teacherCode: '',
    phone: '',
    collegeName: '',
  });

  // 获取用户 store 实例，用于获取登录用户 ID
  const userStore = useUserStore();

  /**
   * @description 获取教师信息的计算属性
   * @returns {Object} 教师信息对象
   */
  const getTeacherInfo = computed(() => teacherInfo.value);

  /**
   * @description 设置教师信息的方法
   * @param {Object} info - 待设置的教师信息对象
   */
  function setTeacherInfo(info) {
    teacherInfo.value = info;
  }

  /**
   * @description 异步获取教师详细信息并更新 store
   * @returns {Promise<void>}
   */
  async function fetchTeacherInfo() {
    try {
      // 调用 API 获取教师信息，使用 userStore 中的登录 ID
      const res = await getDetail(parseInt(userStore.id));
      if (res.code === 200) {
        setTeacherInfo(res.data); // 更新 teacherInfo 状态

      } else {
        console.error('获取教师信息失败:', res.msg);
      }
    } catch (error) {
      console.error('获取教师信息异常:', error);
    }
  }

  // 返回所有需要暴露给组件的状态和方法
  return {
    teacherInfo,
    getTeacherInfo,
    setTeacherInfo,
    fetchTeacherInfo,
  };
});